import koa from "koa";

/** 请求方法 */
export enum Method {
    GET = 'get',
    POST = 'post',
    PUT = 'put',
    DELETE = 'delete'
}

/**请求上下文 */
export type Context = koa.Context;
/**动态路由记录数据 */
export type Params = Record<string, any>;

export interface ControllerBase {
    /** 控制器运行时加载的中间件集合 */
    _middleware?: Array<Function>;
    /** 该控制器支持的请求类型，默认为 All */
    _method?: Set<Method>|Array<Method>;

}

export type Result = {[k: string]: any}|any;

/**
 * 整理Json返回数据
 * @param Result 返回数据 
 * @param msg 返回提示 ok
 * @param code 返回编码 200
 * @returns 
 */
export function json(obj: Result, msg: string = 'ok', code: number = 200) {
    return {
        code,
        msg,
        data: obj
    }
}